package br.com.sipe.entidade;

import static javax.persistence.GenerationType.IDENTITY;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.envers.Audited;
import org.hibernate.validator.constraints.Email;

import br.com.arquitetura.entidade.Entidade;

@Entity
@Table(name = "USUARIO", catalog = "SIPE")
@Audited
public class Usuario extends Entidade<Integer> {

	private static final long serialVersionUID = -4934269009612475727L;

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "ID_USUARIO", unique = true, nullable = false)
	private Integer id;

	@Column(name = "NOME", nullable = false)
	private String nome;

	@Email(message = "Email inválido")
	@Column(name = "EMAIL", nullable = false)
	private String email;

	@Column(name = "CPF", nullable = false)
	private String cpf;

	@Column(name = "LOGIN", nullable = false, unique = true)
	private String login;

	@Column(name = "SENHA", nullable = false)
	private String senha;

	@Column(name = "FLG_ATIVO", nullable = false)
	private Boolean flgAtivo;

	@Transient
	private String ativoFormat;

	public Usuario() {
	}

	public Usuario(Integer id) {
		this.id = id;
	}

	public String getAtivoFormat() {
		if (flgAtivo != null && flgAtivo) {
			return "Sim";
		} else {
			return "Não";
		}
	}

	public void setAtivoFormat(String ativoFormat) {
		this.ativoFormat = ativoFormat;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public Boolean getFlgAtivo() {
		return flgAtivo;
	}

	public void setFlgAtivo(Boolean flgAtivo) {
		this.flgAtivo = flgAtivo;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

}
